package com.wande.dataplatform.service;

import java.util.List;
import java.util.Map;

/**
 * Doris 查询服务接口
 * 
 * @author ruoyi
 */
public interface IDorisQueryService {

    /**
     * 执行 SQL 查询
     * 
     * @param sql SQL 语句
     * @return 查询结果
     */
    List<Map<String, Object>> executeQuery(String sql);

    /**
     * 执行 SQL 查询（带超时控制）
     * 
     * @param sql SQL 语句
     * @param timeoutSeconds 超时时间（秒）
     * @return 查询结果
     */
    List<Map<String, Object>> executeQuery(String sql, int timeoutSeconds);

    /**
     * 执行分页查询
     * 
     * @param sql SQL 语句
     * @param pageNum 页码（从1开始）
     * @param pageSize 每页大小
     * @return 查询结果
     */
    Map<String, Object> executePageQuery(String sql, int pageNum, int pageSize);

    /**
     * 执行分页查询（带超时控制）
     * 
     * @param sql SQL 语句
     * @param pageNum 页码（从1开始）
     * @param pageSize 每页大小
     * @param timeoutSeconds 超时时间（秒）
     * @return 查询结果
     */
    Map<String, Object> executePageQuery(String sql, int pageNum, int pageSize, int timeoutSeconds);

    /**
     * 执行更新操作（INSERT, UPDATE, DELETE）
     * 
     * @param sql SQL 语句
     * @return 影响的行数
     */
    int executeUpdate(String sql);

    /**
     * 执行更新操作（带超时控制）
     * 
     * @param sql SQL 语句
     * @param timeoutSeconds 超时时间（秒）
     * @return 影响的行数
     */
    int executeUpdate(String sql, int timeoutSeconds);

    /**
     * 批量执行 SQL
     * 
     * @param sqlList SQL 语句列表
     * @return 每条 SQL 影响的行数
     */
    int[] executeBatch(List<String> sqlList);

    /**
     * 查询单个值
     * 
     * @param sql SQL 语句
     * @return 查询结果（第一行第一列）
     */
    Object queryForObject(String sql);

    /**
     * 查询记录数
     * 
     * @param sql SQL 语句
     * @return 记录数
     */
    long queryForCount(String sql);

}
